function [Val,Vhat]=Fun_Vhat(PP,SS,T,Profit,TAU,w_N,w_H,State)
% T=SS.T;Profit=SS.Profit;TAU=SS.TAU;w_N=SS.w_N;w_H=SS.w_H;State=SS.FunApp.V.State;
%% Preliminary
% States
N_State     =   size(State,1);
f           =   State(:,1);
ID_z        =   SS.FunApp.ExoState.State(State(:,2),1);
ID_FI       =   SS.FunApp.ExoState.State(State(:,2),2);
ID_RI       =   SS.FunApp.ExoState.State(State(:,2),3);
z           =   PP.ExoState.IdioInc.Node(ID_z);
FI          =   PP.ExoState.Idio_FI.Node(ID_FI);
RI          =   PP.ExoState.Idio_RI.Node(ID_RI);

what        =   (1-TAU)*( RI*w_H + (1-RI)*w_N );

%% Evaluation
wN_SS       =   SS.w_N*SS.N_N+SS.w_H*SS.N_H;
bb          =   T+Profit*z+f;
b_fc        =   zeros(N_State,1);
b           =   zeros(N_State,1);
b_dom       =   zeros(N_State,1);
b_ext       =   zeros(N_State,1);
fc          =   zeros(N_State,1);
fp          =   zeros(N_State,1);
Exp         =   bb-b_fc;
[~,MinExp,~]=   UtilityFlow_Sep(PP.NU_C,PP.NU_L,SS.PSI,z.*what,PP.MinCon*wN_SS,'Consumption');
MinExp      =   MinExp/wN_SS;
UI          =   (1+PP.UI_Slack)*max(MinExp-Exp,0);
Exp         =   UI+Exp;
[u,c,l]     =   UtilityFlow_Sep(PP.NU_C,PP.NU_L,SS.PSI,z.*what,Exp*wN_SS,'Expenditure');
c           =   c/wN_SS;
% l           =   l/PP.N_SS;
Val         =   u;
Vhat        =   struct('Val',Val,...
                       'Policy',struct('c',c,'l',l,'zl',z.*l, ...
                                       'b_fc',b_fc,'fp',fp,'fc',fc,'UI',UI, ...
                                       'b',b,'b_dom',b_dom,'b_ext',b_ext,...
                                       'bp_dom',zeros(N_State,1),'bp_ext',zeros(N_State,1)) ...
                       );